<template>
  <div class="app-container home">
    <el-row :gutter="20">
      <el-col :sm="24" :lg="12" style="padding-left: 20px;">
        <h1>轻舟后台管理脚手架</h1>
        <h3 style="padding-left: 15px">v{{ version }}</h3>
        <p>
          在目前Java生态的后台管理脚手架中，<el-link class="link-size" type="primary" icon="Link" @click="goTarget(ruoyi)">若依</el-link> 是非常优秀的。日常开发中一直在用。
          <br/>
          但是参与运维之后，发现基于 Spring Cloud 开发的若依，打包体积过大，运行时内存占用很高。这怎么能适应云原生时代呢? 所以一直在找解决方案。
          <br/>
          终于发现了 <el-link class="link-size" type="primary" icon="Link" @click="goTarget(solon)">Solon</el-link>。
          <br/>
          于是基于 Solon，仿照若依，开发了这一套后台管理脚手架，使得用过若依的开发者能够快速上手。
        </p>
        <p>
          取名 ‘轻舟’，寓意 ‘又轻又快’。
        </p>
        <el-button style="margin-top: 10px;" type="primary" icon="Cloudy" plain @click="goTarget(gitee)">访问码云</el-button>
      </el-col>
      <el-col :sm="24" :lg="12" style="padding-left: 50px;">
        <el-row>
          <el-col :span="12">
            <h2>技术选型</h2>
          </el-col>
        </el-row>
        <el-row>
          <el-col :span="6">
            <h3>后端技术</h3>
            <ul>
              <li>Solon</li>
              <li>Solon Cloud</li>
              <li>HikariCP</li>
              <li>Mybatis-Flex</li>
              <li>Redis</li>
              <li>Sa-Token</li>
              <li>Hutool</li>
              <li>...</li>
            </ul>
          </el-col>
          <el-col :span="6">
            <h3>前端技术</h3>
            <ul>
              <li>Vue</li>
              <li>Vue-Router</li>
              <li>Pinia</li>
              <li>Element-Plus</li>
              <li>Axios</li>
              <li>Js-Cookie</li>
              <li>Echarts</li>
              <li>...</li>
            </ul>
          </el-col>
        </el-row>
      </el-col>
    </el-row>

    <el-divider />

    <el-row :gutter="20">
      <el-col :xs="24" :sm="24" :md="12" :lg="8">
        <el-card>
          <template #header>
            <div>
              <span>更新日志</span>
            </div>
          </template>
          <div style="height: 260px; overflow: auto;">
            <el-collapse accordion>
              <el-collapse-item title="v3.0.2 — 2025/04/16">
                <ol>
                  <li>重要：新增定时任务持久化相关的数据表（qingzhou_cloud_schedule.sql）</li>
                  <li>重要：调整数据源配置方式（nacos/qingzhou-*-dev.yml）</li>
                  <li>重要：@Db 注解替换为 @Inject，@DynamicDs 注解替换为 @UseDataSource</li>
                  <li>新增：定时任务持久化及管理页面</li>
                  <li>优化：Mybatis-Flex初始化配置方式</li>
                  <li>优化：替换过时方法</li>
                  <li>修复：按照时间段条件查询不生效的问题</li>
                  <li>修复：在线用户列表分页无效的问题</li>
                  <li>修复：个人中心打不开的问题</li>
                  <li>solon 升为 v3.0.10</li>
                  <li>mybatis-flex 升为 1.10.7</li>
                  <li>redisson 升为 3.39.0</li>
                  <li>hutool 升为 5.8.35</li>
                  <li>jackson 升为 2.18.1</li>
                  <li>lombok 升为 1.18.36</li>
                </ol>
              </el-collapse-item>
              <el-collapse-item title="v3.0.1 — 2025/02/12">
                <ol>
                  <li>修复：验证码开关变量名不一致的问题</li>
                </ol>
              </el-collapse-item>
              <el-collapse-item title="v3.0.0 — 2025/01/21">
                <ol>
                  <li>新增：在线用户监控功能</li>
                  <li>新增：登录设备类型（从PC端登录、从APP端登录）</li>
                  <li>优化：统一返回结果和自定义异常抛出（改用 throw new ServiceException("xxx为空");）</li>
                  <li>优化：前端亿点点改动：“更符合Vue规范”（比如自定义指令使用短横线命名、全局方法统一使用$开头、优化目录结构等等）；“更符合Eslint规范”（比如统一使用单引号、去掉句尾分号等等）</li>
                  <li>修复：超级管理员用户不可进行任何操作</li>
                  <li>修复：超级管理员角色不可进行任何操作</li>
                  <li>solon 升为 v3.0.2</li>
                  <li>mybatis-flex 升为 1.9.8</li>
                  <li>sa-token 升为 1.39.0</li>
                  <li>hutool 升为 5.8.32</li>
                </ol>
              </el-collapse-item>
            </el-collapse>
          </div>
        </el-card>
      </el-col>
      <el-col :xs="24" :sm="24" :md="12" :lg="8">
        <el-card style="width: 240px;">
          <template #header>
            <div>
              <span>捐赠支持</span>
            </div>
          </template>
          <div style="height: 260px;">
            <img style="width: 100%;" src="@/assets/images/pay.jpg" alt="donate" />
            <span style="display: inline-block; height: 30px; line-height: 30px;">你可以请作者喝杯咖啡表示鼓励</span>
          </div>
        </el-card>
      </el-col>
    </el-row>

  </div>
</template>

<script setup name="Index">
const version = ref('3.0.2')
const gitee = ref('https://gitee.com/opensolon/qingzhou-cloud')
const ruoyi = ref('https://www.ruoyi.vip')
const solon = ref('https://solon.noear.org')

function goTarget(url) {
  window.open(url, '__blank')
}
</script>

<style scoped lang="scss">
.home {
  font-family: "open sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
  font-size: 13px;
  color: #676a6c;
  overflow-x: hidden;

  h1 {
    display: inline-block;
    margin-top: 0px;
    font-size: 26px;
    font-weight: 400;
  }

  h3 {
    display: inline-block;
    margin-top: 0px;
  }

  p {
    margin-top: 0px;
  }

  .link-size {
    font-size: 13px;
  }

  ul {
    padding: 0;
    margin: 0;
  }

  ol {
    display: block;
    list-style-type: decimal;
    margin-block-start: 1em;
    margin-block-end: 1em;
    margin-inline-start: 0;
    margin-inline-end: 0;
    padding-inline-start: 40px;
  }
}
</style>
